package a_soso.utils;

import a_soso.common.Common;
import a_soso.entity.*;
//import a_soso.service.CallService;
//import a_soso.service.NetService;
//import a_soso.service.SendService;

import java.io.*;
import java.util.*;

public class CardUtil {
//    Map<String, MobileCard> cards = new HashMap<>();
//    Map<String, List> consumInfos = new HashMap<>();
//    List<Scene> scenes = new ArrayList<>();
//
//
//    public void init() {
//        MobileCard card1 = new MobileCard("何玲玲", "123", "13965756432",
//                new TalkPackage(), 58.0, 42.0);
//        MobileCard card2 = new MobileCard("黄露露", "123", "13956712467",
//                new NetPackage(), 68.0, 32.0);
//        MobileCard card3 = new MobileCard("朱蓉蓉", "123", "13911568956",
//                new SuperPackage(), 78.0, 22.0);
//        MobileCard card4 = new MobileCard("桃跑跑", "123", "13924221868",
//                new TalkPackage(), 78.0, 2.0);
//        card4.setConsumAmount(98.0);
//        card4.setRealTalkTime(500);
//        card4.setRealSMSCount(100);
//        cards.put("13965756432", card1);
//        cards.put("13956712467", card2);
//        cards.put("13911568956", card3);
//        cards.put("13924221868", card4);
//    }
//
//    /**
//     * 使用场景初始化
//     */
//    public void initScenes(){
//        scenes.add(new Scene("通话",90,"问候客户，谁知其如此难缠 通话90分钟"));
//        scenes.add(new Scene("通话",30,"询问妈妈身体状况 本地通话30分钟"));
//        scenes.add(new Scene("短信",5,"参与环境保护实施方案问卷调查 发送短信5条"));
//        scenes.add(new Scene("短信",50,"通知朋友手机换号，发送短信50条"));
//        scenes.add(new Scene("上网",1*1024,"和女友微信视频聊天   使用流量1G"));
//        scenes.add(new Scene("上网",2*1024,"晚上手机在线看韩剧，不留神睡着啦！ 使用流量 2G"));
//    }
//
//
//    public boolean isExistCard(String number,String password){
//        Set<String> numbers = cards.keySet();
//        Iterator<String> it = numbers.iterator();
//        while (it.hasNext()){
//            String searchNum = it.next();
//            if (searchNum.equals(number)
//                    &&(cards.get(searchNum)).getPassword().equals(password)){
//                return true;
//            }
//        }
//        return true;
//    }
//
//    public boolean isExistCard(String searcchNumber){
//        Set<String> numbers = cards.keySet();
//        for (String number:numbers){
//            if (number.equals(searcchNumber)){
//                return true;
//            }
//        }
//        return false;
//    }
//
//
//    public String createNumber(){
//        Random random = new Random();
//        boolean isExist = false;
//        String number = "";
//        int temp = 0;
//        do {
//            isExist = false;
//            do {
//                temp = random.nextInt(100000000);
//            }while (temp < 10000000);
//            number = "139"+temp;
//            Set<String> cardNumbers = cards.keySet();
//            for (String cardNum:cardNumbers){
//                if (number.equals(cardNum)){
//                    isExist = true;
//                    break;
//                }
//            }
//        }while (isExist);
//        return number;
//    }
//
//    public String[] getNewNumbers(int count){
//        String[] numbers = new String[count];
//        for (int i=0;i<count;i++){
//            numbers[i] = createNumber();
//        }
//        return numbers;
//    }
//
//    public void addCard(MobileCard card){
//        cards.put(card.getCardNumber(),card);
//        System.out.println("?????");
//        card.showMeg();
//    }
//
//    public void delCard(String delNumber){
//        if (isExistCard(delNumber)){
//            cards.remove(delNumber);
//            System.out.println("????"+delNumber+"?????????????");
//        }else {
//            System.out.println("?????????δ????????????????");
//        }
//    }
//
//    public void showRemainDetail(String searchNumber){
//        MobileCard card;
//        int remainTalkTime;
//        int remainSmsCount;
//        int remainFlow;
//        StringBuffer meg = new StringBuffer();
//
//        card = cards.get(searchNumber);
//        meg.append("?????????"+searchNumber+"??????????\n");
//        ServicePackage pack = card.getServicePackage();
//        if (pack instanceof TalkPackage){
//            TalkPackage cardPack = (TalkPackage)pack;
//            remainTalkTime = cardPack.getTalkTime()>card
//                    .getRealTalkTime()?cardPack.getSmsCount()
//                    -card.getRealTalkTime():0;
//            meg.append("??????"+remainTalkTime+"????\n");
//
//            remainSmsCount = cardPack.getSmsCount()>card
//                    .getRealSMSCount()?cardPack.getSmsCount()
//                    -card.getRealSMSCount():0;
//            meg.append("????????"+remainSmsCount+"??");
//        }else if (pack instanceof NetPackage){
//            NetPackage cardPark = (NetPackage)pack;
//            remainFlow = cardPark.getFlow()>card.getRealFlow()? cardPark
//                    .getFlow()-card.getRealFlow():0;
//            meg.append("????????"+ Common.dataFormat(remainFlow*1.0/1024)+"GB");
//        }else if(pack instanceof SuperPackage){
//            SuperPackage cardPack = (SuperPackage) pack;
//            remainTalkTime = cardPack.getTalkTime()>card
//                    .getRealTalkTime()?cardPack.getTalkTime()
//                    -card.getRealTalkTime():0;
//            meg.append("????????"+remainTalkTime+"????\n");
//            remainSmsCount = cardPack.getSmsCount()>card
//                    .getRealSMSCount()?cardPack.getSmsCount()
//                    -card.getRealSMSCount():0;
//            meg.append("??????????"+remainSmsCount+"??\n");
//            remainFlow = cardPack.getFlow()>card.getRealFlow()?cardPack
//                    .getFlow()-card.getRealFlow():0;
//            meg.append("??????????"+Common.dataFormat(remainFlow*10/1024)+"GB");
//        }
//        System.out.println(meg);
//    }
//
//    public void showAmountDetail(String searchNumber){
//        MobileCard card;
//        StringBuffer meg = new StringBuffer();
//        card = cards.get(searchNumber);
//        meg.append("????????"+card.getCardNumber()+"???????????\n");
//        meg.append("??????"+card.getServicePackage().getPrice()+"?\n");
//        meg.append("???"+Common.dataFormat(card.getConsumAmout())+"?\n");
//        meg.append("??????"+Common.dataFormat(card.getMoney())+"?");
//        System.out.println(meg);
//    }
//
//    public void changingPack(String number,String packNum){
//        MobileCard card;
//        ServicePackage pack;
//        if (isExistCard(number)){
//            card = cards.get(number);
//            switch (packNum){
//                case "1":
//                    pack = new TalkPackage();
//                    break;
//                case "2":
//                    pack = new NetPackage();
//                    break;
//                default:
//                    pack = new SuperPackage();
//                    break;
//            }
//            if (!(card.getServicePackage()).getClass().getName()
//                    .equals(pack.getClass().getName())){
//                if (card.getMoney()>=pack.getPrice()){
//                    card.setMoney(card.getMoney()-pack.getPrice());
//
//                    card.setServicePackage(pack);
//                    card.setRealTalkTime(0);
//                    card.setRealFlow(0);
//                    card.setRealSMSCount(0);
//
//                    card.setConsumAmout(pack.getPrice());
//                    System.out.println("???????????");
//                    pack.showInfo();
//                }else {
//                    System.out.println("??????????????????????????????"+
//                            ",????????????????????");
//                    return;
//                }
//            }else {
//                System.out.println("????????????????????????軻????");
//            }
//        }else {
//            System.out.println("?????????δ????????????");
//        }
//    }
//
//
//    public void chargeMoney(String number,double money){
//        MobileCard card;
//        if (money<50){
//            System.out.println("??????????????50???");
//            return;
//        }
//        card = cards.get(number);
//        card.setMoney(card.getMoney()+money);
//        System.out.println("???????????????????"+Common.dataFormat(card.getMoney())+"???");
//    }
//
//    public void addConsumInfo(String number,ConsumInfo info){
//        Set<String> numbers = consumInfos.keySet();
//        Iterator<String> it = numbers.iterator();
//        List<ConsumInfo> infos = new ArrayList<>();
//        boolean isExist = false;
//        while (it.hasNext()){
//            if (it.next().equals(number)){
//                infos = consumInfos.get(number);
//                infos.add(info);
//                isExist = true;
//                System.out.println("????????????????");
//                break;
//            }
//        }
//        if (!isExist){
//            infos.add(info);
//            consumInfos.put(number,infos);
//            System.out.println("????????????????????????????????");
//        }
//    }
//
//    public void printConsumInfo(String number){
//        Writer fileWriter = null;
//
//        try {
//            fileWriter = new FileWriter(number+"G:\\Advanced_API\\src\\a_soso\\??????.txt");
//            Set<String> numbers = this.consumInfos.keySet();
//            Iterator<String> it = numbers.iterator();
//            List<ConsumInfo> infos = new ArrayList<>();
//            boolean isExist = false;
//            while (it.hasNext()){
//                if (((String)it.next()).equals(number)){
//                    infos = (List)this.consumInfos.get(number);
//                    isExist = true;
//                    break;
//                }
//            }
//
//            if (isExist){
//                StringBuffer content = new StringBuffer("*****"+number+"??????******\n");
//                content.append("???\t????\t????(??)/??????MB??/???????????\n");
//
//                for (int i = 0;i<((List)infos).size();i++){
//                    ConsumInfo info = (ConsumInfo) ((List)infos).get(i);
//                    content.append(i+1+".\t"+info.getType()+"\t"+info.getConsumData()+"\n");
//                }
//
//                fileWriter.write(content.toString());
//                fileWriter.flush();
//                System.out.println("?????????????");
//            }else {
//                System.out.println("???????????????????????????????");
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        } finally {
//          if (fileWriter!=null){
//              try {
//                  fileWriter.close();
//              } catch (IOException e) {
//                  e.printStackTrace();
//              }
//          }
//        }
//    }
//
//    public void userSoso(String number){
//        MobileCard card = (MobileCard)this.cards.get(number);
//        ServicePackage pack = card.getServicePackage();
//        Random random = new Random();
//        int ranNum;
//        int temp = 0;
//
//        while (true){
//            ranNum = random.nextInt(6);
//            Scene scene = (Scene)this.scenes.get(ranNum);
//            switch (ranNum){
//                case 0:
//                case 1:
//                    if (!(pack instanceof CallService)){
//                        break;
//                    }
//
//                    System.out.println(scene.getDescription());
//                    CallService callService = (CallService) pack;
//
//                    try {
//                        temp = callService.call(scene.getData(),card);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                    this.addConsumInfo(number,new ConsumInfo(number,scene.getType(),temp));
//                    return;
//                case 2:
//                case 3:
//                    if (!(pack instanceof SendService)){
//                        break;
//                    }
//
//                    System.out.println(scene.getDescription());
//                    SendService sendService = (SendService) pack;
//
//                    try {
//                        temp = sendService.sendMessage(scene.getData(),card);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                    this.addConsumInfo(number,new ConsumInfo(number,scene.getType(),temp));
//                    return;
//                case 4:
//                case 5:
//                    if (!(pack instanceof NetService)){
//                        break;
//                    }
//
//                    System.out.println(scene.getDescription());
//                    NetService netService = (NetService) pack;
//
//                    try {
//                        temp = netService.netPlay(scene.getData(),card);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                    this.addConsumInfo(number,new ConsumInfo(number,scene.getType(),temp));
//                    return;
//                default:
//                    return;
//            }
//        }
//    }
//
//    public ServicePackage createPack(int packId){
//        ServicePackage pack = null;
//        switch (packId){
//            case 1:
//                pack = new TalkPackage();
//                break;
//            case 2:
//                pack = new NetPackage();
//                break;
//            case 3:
//                pack = new SuperPackage();
//        }
//        return (ServicePackage) pack;
//    }
//
//    public void showDescription(){
//        FileReader rd = null;
//
//        try {
//            rd = new FileReader("G:\\Advanced_API\\src\\a_soso\\?????????.txt");
//            char[] content = new char[1024];
//            StringBuffer sb = new StringBuffer();
//            int len;
//            while ((len = rd.read(content))!=-1){
//                sb.append(content,0,len);
//            }
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//
//    }
}


